<?php
/**
 * Created by PhpStorm.
 * User: zhangrxiang
 * Date: 17-1-17
 * Time: 上午9:12
 */

//Array 数组
//PHP 中的数组实际上是一个有序映射。
//映射是一种把 values 关联到 keys 的类型。

$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];

//var_dump($arrkey 可以是 integer 或者 string。value 可以是任意类型。ay);
//此外 key 会有如下的强制转换：
//
//包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。
//但是 "08" 则不会强制转换，因为其不是一个合法的十进制数值。
//浮点数也会被转换为整型，意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
//布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
//Null 会被转换为空字符串，即键名 null 实际会被储存为 ""。
//数组和对象不能被用为键名。坚持这么做会导致警告：Illegal offset type。

$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);

$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
        "dimensional" => array(
            "array" => "foo"
        )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array{42});
var_dump($array["multi"]["dimensional"]["array"]);

function getArray() {
    return array(1, 2, 3);
}

// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

// or
list(, $secondElement) = getArray();


// fill an array with all items from a directory
$handle = opendir('.');
while (false !== ($file = readdir($handle))) {
    $files[] = $file;
}
var_dump($files);
closedir($handle);